import pandas as pd
import re
from collections import Counter
import hashlib

def Word_frequency_statistics(file_path,new_file_name):
    # 打开文件
    txt_file = open(file_path, 'r')
    # 读取文件内容
    txt_data = txt_file.read()
    # 字母小写化
    txt_lower = txt_data.lower()
    # 正则表达式去除特殊符号
    punc = '~`!#$%^&*()_+-=|\';":/.,?><~·！@#￥%……&*（）——+-=“：’；、。，？》《{}\n'
    # 调用正则表达
    txt_query = re.sub(r"[%s]+" % punc, "", txt_lower)
    # 使用空格来对字符串进行裁切
    txt_list = txt_query.split(' ')
    # 调用统计库来对词频进行统计
    word = Counter(txt_list)
    # 创建一个列表来接收DataFrame原型
    pa_list = []
    # 把键、值和根据键名生成的md5写入原型里
    for key, value in word.items():
        pa_list.append([key, value, hashlib.md5(key.encode('utf-8')).hexdigest()])
    # 生成DataFrame
    pd_data = pd.DataFrame(pa_list)
    # 根据值和md5进行排序
    dataexclex = pd_data.sort_values([1, 2])
    # 把文件导出
    dataexclex.to_csv(f'./{new_file_name}.csv')

# 要词频统计的文件路径
file_path = ''
# 导出时的文件名称
new_file_name = ''
# 调用函数统计词频
Word_frequency_statistics(file_path,new_file_name)
